import os
import csv
import mysql.connector

# MySQL数据库连接配置
config = {
    'user': 'root',
    'password': 'Dhdr8818341',
    'host': 'localhost',
    'raise_on_warnings': True
}

# 获取.sql文件列表
# sql_folder = 'test'  # 替换为包含测试用例.sql文件的文件夹路径
sql_folder = '0614math'  # 替换为包含测试用例.sql文件的文件夹路径
# sql_folder = '0614aes'  # 替换为包含测试用例.sql文件的文件夹路径
sql_files = [f for f in os.listdir(sql_folder) if f.endswith('.sql')]

# 连接到MySQL数据库
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()

# 创建结果输出文件
# output_file = 'output0614aes.csv'  # 输出文件名，CSV 或文本文件
output_file = 'output0614math.csv'  # 输出文件名，CSV 或文本文件
with open(output_file, 'w', newline='', encoding='utf-8-sig') as file:  # 修改编码方式为 'utf-8-sig'
    writer = csv.writer(file)  # 创建 CSV 写入器
    writer.writerow(['文件名', '执行结果'])  # 写入表头

    # 逐个执行.sql文件中的SQL语句
    for sql_file in sql_files:
        with open(os.path.join(sql_folder, sql_file), 'r', encoding='utf-8-sig') as file:  # 修改编码方式为 'utf-8-sig'
            sql_statements = file.read().split(';')  # 假设每个语句以分号结尾
            success = True  # 标记整个文件的执行结果，默认为成功

            for statement in sql_statements:
                if statement.strip():  # 忽略空语句
                    try:
                        cursor.execute(statement)
                        results = cursor.fetchall()  # 读取和处理结果集
                        # 处理结果集的代码.
                        cnx.commit()

                    except mysql.connector.Error as err:
                        print(f"执行SQL语句时出错: {err}")
                        print("出错语句:", statement)
                        success = False  # 标记执行失败
                        break

        # 写入文件名和执行结果
        if success:
            writer.writerow([sql_file, '成功'])
        else:
            writer.writerow([sql_file, '出错'])

# 关闭数据库连接
cursor.close()
cnx.close()